using Lzfy_His_Service.Models;

namespace Lzfy_His_Service.Repositories
{
    /// <summary>
    /// 退费情况查询仓储接口
    /// </summary>
    public interface IRefundStatusRepository
    {
        /// <summary>
        /// 分页查询退费情况数据
        /// </summary>
        Task<(IEnumerable<RefundStatusData> data, int totalCount)> GetPagedAsync(
            int pageIndex, int pageSize, string? name = null, string? idNumber = null, 
            string? refundResult = null, DateTime? startDate = null, DateTime? endDate = null);

        /// <summary>
        /// 获取总记录数
        /// </summary>
        Task<int> GetTotalCountAsync(string? name = null, string? idNumber = null, 
            string? refundResult = null, DateTime? startDate = null, DateTime? endDate = null);

        /// <summary>
        /// 流式查询退费情况数据（用于导出）
        /// </summary>
        IAsyncEnumerable<RefundStatusData> GetStreamAsync(string? name = null, string? idNumber = null, 
            string? refundResult = null, DateTime? startDate = null, DateTime? endDate = null);
    }
}